import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCDemo {
    public static void main(String[] args) throws SQLException {
        //1.创建“数据源”(DataSource)
        DataSource dataSource = new MysqlDataSource();//向上转型
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java111?characterEncoding=utf8&useSSL=false");//向下转型
        ((MysqlDataSource) dataSource).setUrl("root");
        ((MysqlDataSource) dataSource).setUrl("1115");

        //2. 和数据库服务器建立链
        Connection connection = dataSource.getConnection();//选正确Connection java.sql 这个Connection对象，就表示客户端和服务器之间的“链接对象"

        //3.能够构造一个操作数据库的sql语句.
        String sql = "insert into test values(1,'张三')";//字符串的形式
        PreparedStatement preparedStatement = connection.prepareStatement(sql);//对象的形式(内部会对sql进行解析校验)

        //4.执行 sql,把刚才解析好的语句发给数据库服务器.
        //返回值是一个int 类型,表示这个操作影响了几行数据
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);

        //5. 执行完毕， 有收尾操作， 释放前面的创建的各种资源.
        //    主要是释放 语句对象 和链接对象. DataSource 是不必释放的.
        //    释放顺序通常是要和创建顺序相反的，比如衣服先穿的后脱
        preparedStatement.close();
        connection.close();
    }
}
